const clickHandler = function (e) {
  console.log("hello");
};

btn.addEventListener(
  "click",
  // clickHandler,
  // _.throttle(clickHandler,1000)
  mythrottle(clickHandler, 1000)
);

/* 简单实现 无定时器 */
// function mythrottle(fn, delay) {
//   // 存储上一次的调用时间
//   let lastCallTime = 0;

//   return function (...args) {
//     if (Date.now() - lastCallTime >= delay) {
//       fn.apply(null, args);

//       // 将最后一次调用时间存储在闭包里
//       lastCallTime = Date.now();
//     }
//   };
// }

// function mythrottle(fn, delay) {
//   // 调用禁令（默认假）
//   let forbidden = false;

//   return function (...args) {
//     /* 没有禁令则直接调用 */
//     if (!forbidden) {
//       fn.apply(null, args);

//       // 不允许在1秒内发生下一次调用
//       forbidden = true;

//       // 1后撤销禁令
//       setTimeout(() => {
//         forbidden = false;
//       }, delay);
//     }
//   };
// }

/* 标准timer版答案 */
function mythrottle(fn, delay) {
  // 调用禁令（默认假）
  let timer = null;

  return function (...args) {
    /* 没有禁令则直接调用 */
    if (!timer) {
      fn.apply(null, args);

      // 设置禁令timer 并于1后撤销
      timer = setTimeout(() => {
        // 到点撤销禁令
        timer = null;
      }, delay);
    }
    
    // else{
    //     console.log("禁令存在，本次调用被节流了");
    // }

  };
}
